package com.superman.supermarket.client.utils;

import java.util.ArrayList;
import java.util.List;

import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.storage.client.Storage;
import com.superman.mvpframe.client.utils.StringUtils;
import com.superman.mvpframe.client.utils.XJsonUtil;

/**
 * 授权登录code码校验
 * 
 * @author superman
 * @version 2018年8月28日上午11:10:02
 */
public class AuthUtils {

	private static final String CODE_STORAGE_KEY = "CODE_STORAGE_KEY";

	/**
	 * 当前的code是否有效
	 * 
	 * @author superman
	 * @version 2018年8月28日 上午11:10:20
	 * @param code
	 * @return true or false
	 */
	public static boolean isCodeValid(String code) {
		Storage storage = Storage.getLocalStorageIfSupported();
		if (StringUtils.isEmpty(storage.getItem(CODE_STORAGE_KEY)))
			return true;
		else {
			String str = storage.getItem(CODE_STORAGE_KEY);
			JSONArray jo = JSONParser.parseStrict(str).isArray();
			List<String> list = XJsonUtil.getStrList(jo);
			return list.indexOf(code) == -1;
		}
	}

	/**
	 * 压入已使用的code
	 * 
	 * @author superman
	 * @version 2018年8月28日 上午11:10:25
	 * @param code
	 */
	public static void pushUsedCode(String code) {
		List<String> list = null;
		Storage storage = Storage.getLocalStorageIfSupported();
		if (StringUtils.isEmpty(storage.getItem(CODE_STORAGE_KEY)))
			list = new ArrayList<String>();
		else {
			String str = storage.getItem(CODE_STORAGE_KEY);
			JSONArray jo = JSONParser.parseStrict(str).isArray();
			list = XJsonUtil.getStrList(jo);
		}

		if (list.size() == 10)
			list.remove(0);
		list.add(code);
		storage.setItem(CODE_STORAGE_KEY, XJsonUtil.encodeStringListToJsonArray(list).toString());
	}

}
